// 对axios做封装
// 请求拦截器 
// 错误处理

import axios from 'axios';
import { checkStatus } from './utils'
import { Toast } from 'vant'
axios.interceptors.request.use((config) => {
  // 请求头拦截器
  // 处理token
  const token = window.sessionStorage.getItem('token')
  const headers = {}
  if (token) {
    headers.authorization = "Bearer " + token;
  }
  return {
    ...config,
    ...headers,
  }
})


// 实例添加响应拦截器
axios.interceptors.response.use(function (response) {
  // 对响应数据做处理，以下根据实际数据结构改动！！...

  // const { reason_code } = response.data || {};
  // if (reason_code === '001') { // 请求超时，跳转登录页
  //   const instance = Toast('请求超时，即将跳转到登录页面...');
  //   setTimeout(() => {
  //     instance.close();
  //     window.location.href = '/login';
  //   }, 3000)
  // }
  if (response.data.code === -1) {
    Toast.fail(response.data.message)
  }
  return Promise.resolve(checkStatus(response));
}, function (error) {
  // 对响应错误做处理...
  const errorInfo = checkStatus(error.response);
  if (error.response) {
    Toast.fail(errorInfo)
    return Promise.reject(checkStatus(error.response));
  } else if (
    error.code == "ECONNABORTED" &&
    error.message.indexOf("timeout") != -1
  ) {
    Toast.fail('请求超时')
    return Promise.reject({ msg: "请求超时" });
  } else {
    Toast.fail('接口报错')
    return Promise.reject({});
  }
});


export default axios;